package proyecto.DataAccessObject;
         
import java.util.List;

import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import proyecto.EntityBeans.Curso;

@Stateless
@Remote(CursoDAORemote.class)
public class CursoDAO implements CursoDAORemote{

	@PersistenceContext
	EntityManager entityManager;


	public int save (Curso curso){		
		try{			
			entityManager.persist(curso);			
		} 
		catch(Exception e){
			e.printStackTrace();			
		}	
		System.out.println("fecha " + curso.getFechaAlta());
		return curso.getIdCurso();
	}
	

	public Curso findById(int id) {
		return entityManager.find(Curso.class, id);
		
	}
	
		
	public void merge(Curso curso) {
		try{						
			entityManager.merge(curso);
		} 
		catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public List findByNameCompleto(String name)
	{	     
	      return entityManager.createQuery("select c from Curso c where c.nombre = :nombre").setParameter("nombre", name).getResultList();
	}
	
	public List findByName(String name)
	{	     
	      return entityManager.createQuery("select c from Curso c where c.nombre like :nombre").setParameter("nombre", name.trim()+"%").getResultList();
	}
	
	public List findAll() {		
		return entityManager.createQuery("from Curso").getResultList();
	}
	
	public List findByIdList(int id)
	   {	     
	      return entityManager.createQuery("select c from Curso c where c.idCurso = :idCurso").setParameter("idCurso", id).getResultList();
	   }
	
		
	public void remove(int idCurso){	
		try{
			entityManager.remove(entityManager.find(Curso.class, idCurso));
		}
		catch(Exception e){
			e.printStackTrace();			
		}
	}
	

	public void refresh(Curso curso){
		entityManager.refresh(curso);
	}
}
